package com.example.mysql.学习笔记.基础.各种数据类型.文本字符串;

public class 二进制类型如图片等 {
}

/**
 * 二进制字符串类型
 * MySQL中的二进制字符串类型主要存储一些二进制数据，
 *      比如可以存储图片、音频和视频等二进制数据。
 * MySQL中支持的二进制字符串类型主要包括
 * BINARY、VARBINARY      TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB类型。
 *
 * BINARY与VARBINARY类型
 * | 二进制字符串类型 | 特点     | 值的长度             | 占用空间  |
 * | ---------------- | -------- | -------------------- | --------- |
 * | BINARY(M)        | 固定长度 | M （0 <= M <= 255）  | M个字节   |   用LENGTH表示  大小=M
 * | VARBINARY(M)     | 可变长度 | M（0 <= M <= 65535） | M+1个字节 |   用LENGTH表示  大小=实际的
 * BINARY和VARBINARY类似于CHAR和VARCHAR，只是它们存储的是二进制字符串。
 * BINARY (M)为固定长度的二进制字符串，M表示最多能存储的字节数，取值范围是0~255个字符。
 *      如果未指定(M)，表示只能存储`1个字节`。例如BINARY (8)，表示最多能存储8个字节，
 *      如果字段值不足(M)个字节，将在右边填充'\0'以补齐指定长度。
 * VARBINARY (M)为可变长度的二进制字符串，M表示最多能存储的字节数，
 *      总字节数不能超过行的字节长度限制65535，另外还要考虑额外字节开销，
 *      VARBINARY类型的数据除了存储数据本身外，还需要1或2个字节来存储数据的字节数。
 *      VARBINARY类型`必须指定(M)`，否则报错。
 *
 *
 * BLOB是一个`二进制大对象`，可以容纳可变数量的数据。  不建议使用   会出现大量空洞
 * MySQL中的BLOB类型包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB 4种类型，
 *      它们可容纳值的最大长度不同。可以存储一个二进制的大对象，比如`图片`、`音频`和`视频`等。
 * 需要注意的是，在实际工作中，往往不会在MySQL数据库中使用BLOB类型存储大对象数据，
 *      通常会将图片、音频和视频文件存储到`服务器的磁盘上`，并将图片、音频和视频的"访问路径"存储到MySQL中。
 * | 二进制字符串类型    | 值的长度   | 长度范围                          | 占用空间     |
 * | ---------------- | -------- | ---------------------------------| ------------ |
 * | TINYBLOB         | L        | 0 <= L <= 255                    | L + 1 个字节 |
 * | BLOB             | L        | 0 <= L <= 65535（相当于64KB）     | L + 2 个字节 |
 * | MEDIUMBLOB       | L        | 0 <= L <= 16777215 （相当于16MB） | L + 3 个字节 |
 * | LONGBLOB         | L        | 0 <= L <= 4294967295（相当于4GB） | L + 4 个字节 |
 */
